package com.hspedu.newData.dmsxl.树.二叉树路径.路径;

import com.hspedu.newData.dmsxl.ds.TreeNode;

/**
 * @Author: yh
 * @description: 
 * @CreateTime: 2025-05-26 
 * @Version: 1.0
 */

//todo
public class LC1372二叉树中的最长交错路径 {

    int maxAns;
    public int longestZigZag(TreeNode root) {
        if (root==null) return 0;

        maxAns = 0;
        // false 表示往右走
        // true  表示往左走
        dfs(root,false,0);//向右走
        dfs(root,true,0);//向左走
        return maxAns;
    }

    public void dfs(TreeNode o,boolean dir,int len){
        if (o==null) return;
        maxAns = Math.max(maxAns,len);
        if (!dir){
            if (o.left!=null){
                dfs(o.left,true,len+1);
            }
            if (o.right!=null){
                dfs(o.right,false,1);
            }
        }else {
            if (o.right!=null){
                dfs(o.right,false,len+1);
            }
            if (o.left!=null){
                dfs(o.left,true,1);
            }
        }
    }
}
